perm filename SC3.F4[COL,LCS] blob
sn#351031 filedate 1978-04-24 generic text, type T, neo UTF8
00100 C SCORB.F4 2ND HALF OF SCORE.
00200 SUBROUTINE RUNIT
00300 COMMON /Q/ BNW(100),NWZ /INS/INST(27),BG(60) /TYP/SOS,JOUT
00400 1 ,LN,ITYP,TPALN,JED /NAMES/NA(100),LETRS(27),JNAM(27)
00500 COMMON/VV/LIMIT, V(1) /A/ ROFF(27),NP(27),PCH(27,32),
00600 1 RDEV(27),IPT(27,31),XT(27),OTH(20,16),SCAL(101)
00700 1 ,P1(27),JFM(4),COPY(30),IFM(80)
00800 1 ,FINM(6),TINST(5),ENFI(5),TEDIT(4),INVIS(27)
00900 DIMENSION IV(1),IT(30),IOUT(70),JPT(837),NCNT(27,32)
01000 1,COFF1(27),COFF2(27),RREST(27),AA(100),NPLAY(7),JPLAY(7)
01100 C WITH VX,IOUT AT 70 AND IFM AT 80 OK FOR ONLY
01200 C 40 LIT CHARS + 30 PARAMS PER INST.
01300 C 60 BG TIMES AVAILABLE. FOR INSTS AND INSERTS AND EDITS.
01400 COMMON P(30),J,L,CNT(27),BT,PL(48),MK,DF,DUR(27) /SAM/ISAM
01500 1/E/IQ(27),KL,X,ZPAR,KA,LK,NNUM,JJ,JA,ISUB,NFLG,IXX,ISEMI,IQT
01600 1 ,INP(144),VX(70),ISCA(12),IDAT(11),IAMP,K,KN,M,ML,CODE,IBLA
01700 COMMON/B/MOT,PR,T5,NINS,I,TP,RA,KZY,NWX,INONLY,MX,
01800 1 Y,Z,ISLAC,MZ,N,IDALL,JC,JG,RB,IJ,IX,BW,KB,NL,RC,W,
01900 1 ZZ,CHN,YY
02000 1 /D/TF,AMPFAC,OP1,DURX,IXIN,IFLNM
02100 1 /C/T,NWZZ,IT3,T6,NW,TDUR,A,T2,T4,BY,
02200 1 KODE,NPAR,LP,TBG,AC,NPA,BX,IDF,PM,NM,PAR,PX2,T1,RD,
02300 1 VIJ2
02400 C /C/=26
02500 EQUIVALENCE (PP1,P(1)),(P(2),P2),(P(3),P3),(P(4),P4),
02600 1 (VX1,VX(1)),(INP1,INP(1)),(PL4,PL(4)),(IPT,JPT)
02700 1 ,(VX2,VX(2)),(VX3,VX(3)),(NCNT,PCH),(VX4,VX(4))
02800 1 ,(VX5,VX(5)),(VX,IOUT),(IFM3,IFM(3)),(AA,NA)
02900 1 ,(IT,INP(28)),(V,IV),(IPLAY,ISCA(7)),(IFM2,IFM(2))
03000 1 ,(IFM4,IFM(4)),(COFF1,INP(58)),(COFF2,INP(85))
03100 1 ,(RREST,INP(112))
03200 DATA SCAL/'C/8','CS/8','D/8','DS/8','E/8','F/8','FS/8','G/8',
03300 1 'GS/8','A/8','AS/8','B/8','C/4','CS/4','D/4','DS/4','E/4',
03400 1 'F/4','FS/4','G/4','GS/4','A/4','AS/4','B/4','C/2','CS/2',
03500 1 'D/2','DS/2','E/2','F/2','FS/2','G/2','GS/2','A/2','AS/2',
03600 1 'B/2','C','CS','D','DS','E','F','FS','G','GS','A','AS',
03700 1 'B','C*2','CS*2','D*2','DS*2','E*2','F*2','FS*2','G*2',
03800 1 'GS*2','A*2','AS*2','B*2','C*4','CS*4','D*4','DS*4','E*4',
03900 1 'F*4','FS*4','G*4','GS*4','A*4','AS*4','B*4','C*8','CS*8',
04000 1 'D*8','DS*8','E*8','F*8','FS*8','G*8','GS*8','A*8','AS*8',
04100 1 'B*8','R','F1','F2','F3','F4','F5','F6','F7','F8','F9',
04200 1 'F10','F11','F12','F13','F14','F15','END'/,I1X/'1X'/,
04300 1IFM(1)/'('/,IFM2/'1XA5,'/,IFCOM/5H', ',/,IA1/'A1,'/,
04325 1RNDOFF/10000.0/,NPLAY/'PLAY MUSIC.MUS/BYTESIZE=12/SOUND; '/
04360 1,JPLAY/'PLAY; '/
04400 CC 1 ,RCD/"575326135500/,
04500 C ↑↑↑↑↑↑↑↑↑↑↑ "←-1;" FOR RCDFLG.
04600 DO 9338 K=1,100,2
04700 9338 NA(K)=0
04800 CC JPLAY=IPLAY
05000 C NEWMUS OUTPUT WILL HAVE EXTENDED PLAY STATEMENT.
05050 C <PLAY MUSIC.MUS/BYTESIZE=12/SOUND;>
05100 ITOT=1
05200 PR=0
05250 C****** COLGATE LPT IS ALWAYS SPOOLED
05275 IF(JOUT.EQ.22)JOUT=3
05300 DO 9337 K=1,27
05400 JNAM(K)=0
05500 COFF1(K)=0
05600 9337 RREST(K)=0
05700 C ZEROS NAME CHANGE, CUTOFF AND RAND REST STORAGE
05800 2337 T=0
05900 DO 1107 K=1,30
06000 1107 PL(K)=1.
06100 C 2/74--WAS AT 17300/1 SETS DEFAULT OUTPUT MODE TO 1.
06200 IF(ITYP)GO TO 23371
06300 END FILE 21
06400 DATA ENFI /25H(' INPUT ON "TYPED.DAT"')/
06500 TYPE ENFI
06600 C PUTS AWAY TYPED IN DATA. TO REUSE, EDIT FILE "TYPED".
06700 23371 IF(SOS)WRITE(JOUT,902)
06800 C WRITES A BLANK LINE
06900 NWZZ=0
07000 IAMP=0
07100 IT3=0
07200 K=1
07300 IX=0
07400 BG(NINS+1)=19999.
07500 4011 IF(CNT(K))GO TO 5011
07600 6011 IF(K.EQ.KZY)GO TO 4337
07700 K=K+1
07800 GO TO 4011
07900 5011 L=V(I-1)/(-9900.)
08000 IF(L.EQ.1)I=I-1
08100 V(I)=CNT(K)
08200 V(I+1)=P(K)
08300 V(I+3)=-44.
08400 I=I+5
08500 IF(P(K).EQ.980000.)I=I-4
08600 KL=I
08700 CC REWIND 23
08800 ICT=IPT(K,1)
08900 CALL IFILE(23,ICT)
09000 CC CALL IFILE(1,ICT,IFI)
09100 9011 L=I+6
09200 READ(23,7011)(V(M),M=I,L)
09300 C READS "CONDUCT" AND "RHYTHM" (TAP) DATA.
09400 IF(V(L).EQ.999.)GO TO 8011
09500 I=L+1
09600 GO TO 9011
09700 8011 IF(P(K).NE.980000.)GO TO 6337
09800 DO 7337 K=L,I,-1
09900 7337 IF(V(K).NE.999.)GO TO 8337
10000 CC8337 I=K-1
10100 CC V(I)=0
10200 CC V(I+1)=V(K)
10300 CC V(I+2)=V(K)
10400 8337 I=K+1
10500 V(I)=999.0
10600 V(I+1)=V(K)
10700 V(I+2)=V(K)
10800 C K WAS I-1 ABOVE.
10900 I=I+3
11000 V(KL+1)=I-KL-1
11100 C ABOVE RESETS WORDCOUNT FOR 'CONDUCT' DATA.
11200 GO TO 4337
11300 6337 DO 5337 M=I,L
11400 KN=M
11500 5337 IF(V(M).EQ.999.)GO TO 3337
11600 3337 I=KN
11700 KN=I-KL
11800 V(KL-1)=KN
11900 V(KL-3)=KN+3
12000 GO TO 6011
12100 7011 FORMAT(7F)
12200 4337 IF(V(I-1).EQ.-9900.-BY)I=I-1
12300 V(I)=-19899.
12400 PP1=0
12500 T6=10000.
12600 DO 2118 K=1,NINS
12700 ROFF(K)=0
12800 C********* FEB 17,71
12900 M=NP(K)
13000 IT(K)=0
13100 IPT(K,31)=0
13200 NCNT(K,31)=1
13300 DO 2118 L=1,M
13400 NCNT(K,L)=1
13500 2118 IPT(K,L)=0
13600 DO 5013 K=1,IXIN
13700 5013 X=RAND(0.0,0.0)
13800 CXX REWIND 1
13900 CIRC IF(MX)CALL OFILE(1,ISLAC,'.SCR')
14000 CXX IF(MX)CALL FORNAM(ISLAC,'SCR')
14100 C NOW USES EXTENSION .SCR WHEN WRITING ON DSK (DEV. 1 ONLY!)
14200 NW=1
14300 NWX=0
14400 TDUR=0
14500 A=0
14600 T2=1.
14700 T4=1.
14800 T5=0
14900 J=1
15000 MK=0
15100 C IS THE ABOVE NEEDED?
15200 IF(MX.NE.3)GO TO 40021
15300 K=4
15400 10023 N=AMOD(V(K),100.0)/-11.
15500 C AMOD NEEDED BECAUSE CODE # MAY HAVE -100 FOR DF OR -200 FOR SUBR.
15600 IF(N.EQ.2)GO TO 77
15700 IF(N.EQ.3)GO TO 77
15800 IF(N.NE.4)GO TO 10021
15900 77 IF(V(K-2).LT.10000.)GO TO 10021
16000 J=V(K+1)
16100 IF(J.EQ.1)GO TO 10024
16200 IF(N.NE.3)GO TO 177
16300 IF(V(K+J+1).EQ.101.)J=J-1
16400 177 N=V(K-2)
16500 L=N/10000
16600 M=N-L*10000
16700 TYPE 10022,INST(L),M,J
16800 10024 K=K+ABS(V(K-1))
16900 10021 K=K+1
17000 IF(K.LT.I)GO TO 10023
17100 40021 IF(MZ.NE.-4)GO TO 1002
17200 N=1
17300 40022 K=N+1
17400 IF(N.GT.I)CALL EXIT
17500 X=V(N)
17600 IF(X.EQ.-199.)GO TO 40024
17700 IF(X.EQ.-99.)GO TO 40024
17800 IF(X.GE.0)GO TO 40023
17900 CC PRINT 4002,X
18000 TYPE 4002,X
18100 N=N+1
18200 GO TO 40022
18300 40024 J=N+1
18400 GO TO 40025
18500 C FOR 'SECTIONS'
18600 40023 J=ABS(V(K))+K-1
18700 CC40025 PRINT 4002,(V(K),K=N,J)
18800 40025 TYPE 4002,(V(K),K=N,J)
18900 N=J+1
19000 GO TO 40022
19100 10022 FORMAT(1XA5,' P',I2,' HAS ',I3,' ITEMS.')
19200 4002 FORMAT(10F12.3)
19300 1002 IF(IDALL)GO TO 600
19400 X=DUR(IDALL)
19500 DO 2002 K=1,NINS
19600 2002 IF(DUR(K))DUR(K)=X
00100 C ***** SORTER *************************
00200 C ******* OUTPUT LOOP FROM HERE ON ********
00300 600 IL=0
00400 C********** BELOW IS FOR 'SECTIONS'
00500 KODE=0
00600 NWX=NWX+1
00700 MK=MK+1
00800 Y=BNW(NW)
00900 723 IL=IL+1
01000 3723 Z=V(IL)
01100 IF(Z.EQ.-19899.)GO TO 732
01200 IF(Z.NE.-9900.-Y)GO TO 723
01300 C********** BELOW IS FOR 'SECTIONS'
01400 IF(V(IL-2).EQ.-199.)KODE=IV(IL-1)
01500 2723 IL=IL+1
01600 729 K=IL+2
01700 MOT=V(IL+1)
01800 RD=V(K)
01900 IF(RD.EQ.-67.)GO TO 3726
02000 RB=V(IL)
02100 C************ DOWN TO 4150 IS FOR 'SECTIONS'
02200 IF(RB.NE.-99.)GO TO 4150
02300 KODE=IV(K-1)
02400 2160 IF(KODE.EQ.0)GO TO 723
02500 IF(MZ)WRITE(JOUT,9150),KODE
02600 KL=Y/10000.
02700 RB=Y+KL*10000.
02800 DO 5150 KL=1,I
02900 IF(V(KL).NE.-199.)GO TO 5150
03000 IF(IV(KL+1).NE.KODE)GO TO 5150
03100 IV(K-1)=0
03200 C WHEN 'PLAY' HAS BEEN FOUND, INDENTIFIER CHNGED TO 0
03300 RD=V(KL+2)+9900.
03400 DO 6150 L=KL+2,I
03500 M=V(L)/(-9900.)
03600 IF(M.NE.1)GO TO 6150
03700 RA=RB+RD-V(L)-9900.
03800 V(L)=-9900.-RA
03900 C UPDATES BG TIMES INSIDE SECTION.
04000 CALL BGSORT(RA)
04100 C7150 IF(RA.EQ.BNW(KA))GO TO 6150
04200 C UPDATES LIST OF CHANGE TIMES.
04300 6150 IF(V(L).EQ.-299.)GO TO 160
04400 5150 CONTINUE
04500 160 IL=1
04600 GO TO 3723
04700 C*********** ABOVE IS FOR 'SECTION' REPEATS
04800 4150 LK=RB/10000.+.2
04900 IF(LK.GE.98)GO TO 7700
05000 LP=RB-LK*10000
05100 C LK=INST # LP=PARAM #
05200 LN=IPT(LK,LP)
05300 IPT(LK,LP)=IL+2
05400 IF(RD.EQ.-66.)GO TO 726
05500 IF(RD.EQ.-55.)GO TO 1726
05600 IF(RD.EQ.-56.)GO TO 1726
05700 IF(RD.EQ.-23)GO TO 6700
05800
05900 2727 ML=IPT(LK,LP)
06000 IF(MOT.GT.0)GO TO 3727
06100 C USE NEG WDCNT FOR 'ALL'
06200 DO 4727 KL=LK+1,NINS
06300 IF(NP(KL).GE.LP)GO TO 277
06400 IF(LP.LT.31)NP(KL)=LP
06500 277 IPT(KL,LP)=-(LK+(LP-1)*KZY)
06600 NCNT(KL,LP)=10000
06700 4727 IF(DUR(KL))DUR(KL)=10000.
06800 C ASSUMES THAT DURATIONS ARE SET IN 'NOTES'.
06900 C AFTER 'ALL' IS USED ONCE IT WORKS LIKE DUPL OR REP.
07000 GO TO 727
07100 C 'MOVE' WITH 'ALL' KEEPS ORIGINAL TIME DATA REGARDLESS OF BG TIMES.
07200 3727 IF(LN.LE.0)GO TO 727
07300 IF(V(IL).NE.V(LN-1))GO TO 727
07400 DO 1727 L=1,NINS
07500 DO 1727 KL=1,NP(L)
07600 IF(LN.NE.IPT(L,KL))GO TO 1727
07700 NCNT(L,KL)=10000
07800 C ******* JAN 29,70
07900 IPT(L,KL)=ML
08000 C RESETS POINTERS FOR DUPL AND REP INSTS.
08100 C *** 'ALL' WILL NOT WORK WITH RAN TF.!!!!!*******FEB 21,73
08200 1727 CONTINUE
08300 727 NCNT(LK,LP)=10000
08400 C******** MAY 13,71 RHY REP. FEATURE OMITTED.
08500 2150 IF(MOT)MOT=-MOT
08600 IL=IL+MOT+1
08700 3150 IF(V(IL))GO TO 3723
08800 GO TO 729
08900 726 RB=V(IL+3)
09000 K=RB/10000.
09100 L=RB-K*10000
09200 IPT(LK,LP)=-(K+(L-1)*KZY)
09300 GO TO 2727
09400 3726 LK=V(IL)
09500 M=V(K+1)
09600 KL=NP(M)
09700 DO 4726 L=1,KL
09800 IPT(LK,L)=IPT(M,L)
09900 IF(IPT(M,L).NE.0)NCNT(LK,L)=10000
10000 C****** JUN 29 71 (LK,L) WAS (L,K)....???????
10100 4726 CONTINUE
10200 IPT(LK,31)=IPT(M,31)
10300 K=0
10400 GO TO 2150
10500 C ABOVE IS FOR DUPLICATION ROUTINE NEXT ADJUSTS TIMES FOR 'RTAP'
10600 6700 KL=IL+V(IL+1)+1.3
10700 RC=V(K-2)
10800 1770 IF(V(KL))GO TO 700
10900 2700 KL=KL+V(KL+1)+1.3
11000 GO TO 1770
11100 700 KL=KL+1
11200 IF(Z.NE.V(KL-1))GO TO 2700
11300 IF(V(KL).NE.RC)GO TO 2700
11400 KL=KL+3
11500 KN=IL+3
11600 LN=V(KN)+.3
11700 DO 3700 L=1,LN,2
11800 RA=V(L+KN)
11900 KA=V(L+KN+1)+.3
12000 RB=0
12100 DO 4700 LP=1,KA
12200 4700 RB=RB+V(KL+LP)
12300 DO 5700 LP=1,KA
12400 5700 V(KL+LP)=V(KL+LP)/RB*RA
12500 V(KL+KA)=V(KL+KA)+.00030
12600 3700 KL=KL+KA
12700 GO TO 2150
12800
12900 C BELOW FOR 'TEMPO' SETUP
13000 7700 T2=V(IL+4)
13100 T1=V(IL+3)
13200 TBG=Y
13300 TDUR=V(IL+2)
13400 CALL SQYY(AC,T1,T2,TDUR)
13500 8700 IF(TDUR.EQ.0)TDUR=10000.
13600 T5=1.
13700 T6=TBG+TDUR
13800 IT3=1.
13900 IF(LK.EQ.98)IT3=IL+2
14000 T4=1.
14100 GO TO 2150
14200 C*************** ANY WDCNTS DOWN FROM HERE. *********
14300 C NEXT ADJUSTS 'MOVE' TIMES IF BG IS AT A NOTE NUMBER.
14400 1726 IF(V(IL-1).GT.-19000.)GO TO 2727
14500 RA=BT
14600 K=IL-1
14700 2726 V(K)=-9900.-RA
14800 ISUB=-1
14900 L=K+5
15000 RB=V(L)+V(L-1)
15100 V(L-1)=RA
15200 K=K+V(K+2)+2
15300 IF(V(K).GT.-19000.)GO TO 2727
15400 IF(V(K+1).NE.V(IL))GO TO 2727
15500 IF(V(K).NE.-9900.-RB)GO TO 2727
15600 RA=RA+V(L)
15700 CALL BGSORT(RA)
15800 GO TO 2726
15900 C CONVERTS BG TIME OF NOTE NUM TO REAL TIME. DOESN'T WORK WITH -66!
16000 C NOW WE BEGIN ON!! NOTE NUM. NOT AFTER NOTE NUM.
16100 732 DO 2606 K=NW,NWZ
16200 2606 BNW(K)=BNW(K+1)
16300 NWZ=NWZ-1
16400 IF(NWZ.EQ.0)GO TO 2111
16500 IF(NWZZ.EQ.1)GO TO 5111
16600 NWZZ=1
16700 IF(NWZ.EQ.1)GO TO 1111
16800 DO 3111 K=1,NWZ
16900 IF(BNW(K).LT.1000.)GO TO 3111
17000 X=BNW(NWZZ)
17100 BNW(NWZZ)=BNW(K)
17200 BNW(K)=X
17300 NWZZ=NWZZ+1
17400 3111 CONTINUE
17500 5111 IF(NWZZ.EQ.NWZ)GO TO 1111
17600 L=NWZZ+1
17700 X=BNW(NWZZ)
17800 DO 4111 K=L,NWZ
17900 IF(BNW(K).GT.X)GO TO 4111
18000 RA=BNW(K)
18100 BNW(K)=X
18200 X=RA
18300 4111 CONTINUE
18400 BNW(NWZZ)=X
18500 GO TO 1111
18600 111 FORMAT(1XA5,'.SCR',12X,'EDIT FILE NAME=',A5,8X,
18700 1'STORAGE=',I5,'/',I5,/' TEMPO FACTOR=',F6.2/)
18800 1023 FORMAT(/' < ',A5,'.SCR -- RANDOM NUMBER=',I6/1X7A5)
18900 C********** BELOW IS FOR 'SECTIONS'
19000 9150 FORMAT(/3X'******* SECTION ',A1)
19100 2111 NWZ=-1
19200 C ABOVE ORDERS BNW DATA TO SAVE TIME AT 1108 ON PG5.
19300 1111 IF(MZ.EQ.0)GO TO 1601
19400 IF(NWX.NE.1)GO TO 1486
19500 WRITE(JOUT,111)ISLAC,IFLNM,I,LIMIT,TF
19600 C*********** JUNE 1,71
19700 C********** BELOW IS FOR 'SECTIONS'
19800 1486 IF(KODE.NE.0)WRITE(JOUT,9150),KODE
19900 K=NWX-1
20000 C*********** JUNE 1,71
20100 IF(NWX.LE.1)GO TO 377
20200 IF(IT(J).NE.-3)WRITE(JOUT,3154),K,Y
20300 377 IF(IT(J).EQ.-3)WRITE(JOUT,5154),K,BX,INST(J)
20400 C*********** JUNE 1,71 X 3 K'S
20500
20600 DO 602 K=1,NINS
20700 48 LK=INST(K)
20800 C*********** JUNE 1,71
20900 IF(NCNT(K,31).EQ.10000)GO TO 477
21000 IF(NWX.GT.1)GO TO 602
21100 477 NCNT(K,31)=1
21200 IJ=IPT(K,31)
21300 X=0
21400 IF(IJ.NE.0)X=V(IJ+2)
21500 WRITE(JOUT,5396),LK,X
21600 X=DUR(K)
21700 IF(X.GT.10000.)GO TO 83
21800 WRITE(JOUT,8396),X
21900 GO TO 602
22000 5396 FORMAT(5XA5,' RANDOM TF =',F4.2,10X,'DURATION =',$)
22100 7396 FORMAT('+',F5.0,' NOTES')
22200 8396 FORMAT('+',F7.2,'"')
22300 83 X=X-10000.
22400 WRITE(JOUT,7396),X
22500 602 CONTINUE
22600 715 IF(IT3.NE.1.)GO TO 1602
22700 RA=T1*TP
22800 RB=T2*TP
22900 WRITE(JOUT,6154),RA,RB,TDUR
23000 IT3=0
23100 1602 IF(NWX.EQ.1)GO TO 315
23200 IF(IT(J).EQ.-3)GO TO 1108
23300 IT(J)=IT(J)/10
23400 GO TO 1108
23500 C*********** JUNE 1,71
23600 6154 FORMAT(' TMP=',F7.3,' TO',F8.3,' DURING',F6.2,' SECS.'/)
23700 7154 FORMAT(' ''CONDUCT'' FILE NAME = ',A5/)
23800 5154 FORMAT(/' << CHANGE',I3,' BEGINS ON NOTE',F5.0,1XA5,' >>'/)
23900 902 FORMAT(1XA5/)
24000 3154 FORMAT(/' << BASIC TIME OF CHANGE',I3,' IS',F8.3,'" >>'/)
24100 4154 FORMAT(' THE FIRST',F9.4,'" ARE OMITTED'/)
24200 C*********** JUNE 1,71
24300 CC1715 FORMAT(' RCDFLG',A5)
24400 C RCD IS SET IN DATA (←-1;)
24500 315 IF(IT3.GT.1)WRITE(JOUT,7154),ICT
24600 IF(OP1.NE.0)WRITE(JOUT,4154),OP1
24700 1601 IF(NWX.GT.1) GO TO 1108
24800 IF(TF.GT.10.)TF=TF/60.
24900 TF=RNDOFF/TF
25000 C RNDOFF IS ROUND OFF NUMBER. (100 OR 1000)
25100 CROFF 100 HERE FOR NEW DAC!?#@&βX 1/76 TF=1000./TF
25200 DO 6015 K=1,30
25300 6015 COPY(K)=-9900.
25400 C INITS PARAM REPRESSION FEATURE.
25500 CC IF(MZ)WRITE(JOUT,1715)RCD
25600 CC IF(MX)WRITE(1,1715)RCD
25700 IF(KB.EQ.0)GO TO 9926
25800 ML=NINS+1
25900 NL=NINS+KB
26000 DO 9826 LK=ML,NL
26100 K=LK
26200 BW=OTH(K-NINS,1)
26300 CIRC IF(BW.NE.-99)GO TO 9826
26400 CIRC K=LK-NINS
26500 CIRC GO TO 5741
26600 CIRCC 'INSERT -99;' COMES BEFORE 'PLAY;'
26700 CIRC9726 BW=19999.
26800 CIRC K=LK+NINS
26900 9826 BG(K)=BW
27000 C 'OTH' INSERTS, WITH BG TIME IN SECONDS, CAN ONLY BE SET WITH TF=1
27100 9926 DO 5015 K=1,NINS
27200 IQ(K)=BG(K)*10000.
27300 BG(K)=0
27400 INP(K)=0
27500 P1(K)=0
27600 IF(DUR(K).LE.10000.)DUR(K)=DUR(K)-.0001
27700 C******* FEB. 16,71 FOR ROUND-OFF NONSENSE
27800 5015 CNT(K)=0
27900 IF(MZ.GE.0)GO TO 3752
27950 IF(ISAM.EQ.0)WRITE(JOUT,1023),ISLAC,IXIN,JPLAY
27960 IF(ISAM)WRITE(JOUT,1023),ISLAC,IXIN,NPLAY
28000 3752 IF(MX.GE.0)GO TO 2752
28050 IF(ISAM.EQ.0)WRITE(1,1023)ISLAC,IXIN,JPLAY
28060 IF(ISAM)WRITE(1,1023)ISLAC,IXIN,NPLAY
28100 2752 BW=0
28200 GO TO 500
00100 752 FORMAT(1X15A5)
00200 1108 M=0
00300 JC=0
00400 CCHD=0
00500 C NWZZ IS SET AT 3111 IN SORTR. CCHD IS FOR CHORD FEATURE.
00600 C ***SAM*** DISABLE NAME CHANGE FEATURE AT LABEL 999 FOR SAM OUTPUT.
00700 IF(NWZ)GO TO 1740
00800 DO 740 K=1,NWZZ
00900 X=BNW(K)
01000 IF(X-.0001.GT.BT)GO TO 2740
01100 IF(X.LE.BW)GO TO 2740
01200 IF(BW)GO TO 2740
01300 IT(J)=IT(J)*10
01400 NW=K
01500 GO TO 600
01600 2740 IF(X.LT.1000.)GO TO 740
01700 IF(X-J*10000.NE.CNT(J)+1.)GO TO 740
01800 X=BT+PR
01900 NW=K
02000 BX=CNT(J)+1.
02100 IT(J)=-3
02200 GO TO 600
02300 740 CONTINUE
02400 IT(J)=0
02500 1740 IF(J.LE.NINS)GO TO 31
02600 7021 K=J-NINS
02700 IF(JC.GT.0)K=JC
02800 5740 IF(PP1.LT.OP1)GO TO 1752
02900 5741 IF(MZ)WRITE(JOUT,752),(OTH(K,L),L=2,16)
03000 IF(MX)WRITE(1,752)(OTH(K,L),L=2,16)
03100 CC IF(MX)WRITE(23,752)(OTH(K,L),L=2,16)
03200 C IF TF .NE.1, ALL INSERT TIMES MUST BE RESET
03300 C IF FIRST PART OF NOTE LIST IS 'OMITTED', CHECK YOUR 'INSERTS'.
03400 DO 17521 L=3,30
03500 17521 COPY(L)=-9900.
03600 C SO THAT ALL PARAMS WILL PRINT,AFTER AN INSERT.
03700 1752 BG(K+NINS)=19999.
03800 OTH(K,1)=19999.
03900 CIRC IF(BW.EQ.-99)GO TO 9726
04000 IF(JC.GT.0)GO TO 21
04100 31 KL=1
04200 IF(KB.EQ.0)GO TO 2031
04300 DO 1031 L=1,KB
04400 K=L
04500 X=OTH(K,1)-1000000.
04600 M=X/100000.
04700 IF(M.NE.J)GO TO 1031
04800 IF(IQ(J).NE.0)GO TO 1031
04900 C M=INST
05000 IF(X-M*100000.EQ.CNT(J)+1)GO TO 5740
05100 1031 CONTINUE
05200 IF(J.GT.NINS)GO TO 500
05300 2031 CNT(J)=CNT(J)+1
05400 ICT=CNT(J)
05500 C INSERT TRAP HERE FOR OVERLAP OF RESTARTED INSTS.******
05600 NPA=NP(J)
05700 PP1=P1(J)
05800 IF(BT.GE.DUR(J))GO TO 5174
05900 IF(IQ(J).EQ.0)GO TO 200
06000 P2=-IQ(J)/10000.
06100 IQ(J)=0
06200 CNT(J)=-1
06300 ICT=-1
06400 CC MK=-1
06500 C PRINTS REST AND CNT=-1 WHEN 1ST BG TIME IS >0
06600 GO TO 4203
06700
06800 C MK IS FLAG FOR RESTS
06900 200 MK=0
07000 IF(BT.NE.0)GO TO 577
07100 IF(J.EQ.1)GO TO 203
07200 577 IF(IPT(J,1).EQ.0)GO TO 203
07300 KN=IPT(J,1)-1
07400 IF(KN.GT.0)GO TO 12033
07500 12032 KN=JPT(-KN)
07600 IF(KN)GO TO 12032
07700 KN=KN-1
07800 C FOR 'ALL' IN P32. FOLLOWS UP ON POINTERS TO POINTERS!
07900 C SOMEDAY PUT P1(32) IN WITH OTHER PARAMS BELOW!!!!
08000 12033 IJ=V(KN)
08100 IF(ABS(V(KN)).EQ.4.)GO TO 1203
08200 C 'IABS' IS FOR -4 USED WITH 'ALL'
08300 Z=(BT+9900.+V(KN-2))/V(KN+2)
08400 C******* FEB 19,71
08500 IF(Z.GT.1.)Z=1.
08600 Y=V(KN+3)
08700 X=(V(KN+4)-Y)*Z+Y
08800 C******* FEB 19,71
08900 GO TO 204
09000 1203 X=V(KN+3)
09100 204 Y=RAND(0.0,1.0)
09200 IF(Y-X)MK=-1
09300
09400 203 DF=1.
09500 C DF=DUTY FACTOR
09600 DO 2155 L=2,NPA
09700 ISUB=0
09800 C WHY DOES ISUB APPEAR AT 14700/5?
09900 IDF=0
10000 C IDF IS DUTY FACTOR FLAG
10100 IJ=IPT(J,L)
10200 12031 IF(IJ)IJ=JPT(-IJ)
10300 IF(IJ)GO TO 12031
10400 C FOLLOWS UP ON POINTERS TO POINTERS!
10500 PM=1.
10600 IF(IJ.GT.1)GO TO 2157
10700 P(L)=0
10800 GO TO 21551
10900 C 7/73
11000 2157 LN=IJ+2
11100 NM=ABS(V(IJ-1))+LN-4
11200 NL=V(IJ)
11300 IF(NL.GT.-100)GO TO 272
11400 IF(NL.GT.-200)GO TO 372
11500 ISUB=-1
11600 NL=NL+200
11700 C FOR SUBROUTINE FLAG
11800 372 IF(NL.GT.-100)GO TO 272
11900 IDF=-1
12000 NL=NL+100
12100 C DEC.6,72 FINDS DUTY FACTOR PARAM
12200 272 VIJ2=V(IJ+1)
12300 KIJ2=VIJ2
12400 KN=NL/(-11)
12500 IF(KN.EQ.0)GO TO 1100
12600 GO TO (61,62,62,62,65,65,67,68),KN
12700 1100 IF(KIJ2.EQ.1)GO TO 1200
12800 ML=3
12900 1900 KA=1
13000 VX1=0
13100 DO 1156 K=LN,NM,ML
13200 VX(KA+1)=V(K)+VX(KA)
13300 1156 KA=KA+1
13400 X=RAND(0.0,1.)
13500 DO 1157 K=2,11
13600 IF(X.GT.VX(K))GO TO 1157
13700 KL=K-1
13800 IF(KN.EQ.7)GO TO 6157
13900 GO TO 1400
14000 1157 CONTINUE
14100 1400 LN=IJ+3*KL
14200 1462 RA=V(LN)
14300 IF(RA.EQ.-10000.)GO TO 5174
14400 CIRC IF(RA.EQ.10000.)GO TO 5174
14500 C FOR "FINE" IN RLIST
14600 RB=V(LN+1)
14700 PAR=RAND(RA,RB)
14800 1300 IF(NL.NE.-1)PM=2.
14900 C IF 2 THEN PRINTS A5
15000 GO TO 1155
15100 1200 PAR=V(IJ+2)
15200 GO TO 1300
15300 C NEXT IS FOR SUBROUTINE AND QUAD CALLS
15400 61 IF(NL.LT.-12)GO TO 6100
15500 CNEW601 IF(ISUB.EQ.-2)GO TO 2601
15600 601 X=P2
15700 C '.5' MAKES ALL SUBR PARAMS PRINTOUT.
15800 CALL SUBR
15900 CC 7/74 NOW SET DUR(J) =0 IN SUBR IF(DF)GO TO 5174
16000 C* OUT--COLGATE DF=-1 IN 'SUBR' WILL CAUSE 'END' FOR INST.
16100 IF(L.EQ.2)GO TO 4203
16200 IF(X.EQ.P2)GO TO 21552
16300 PP2=P2
16400 PR=P2
16500 GO TO 21552
16600 C ABOVE IS FOR P2 CHANGES IN SUBROUTINE
16700 C TF,TEMPO,CONDUCT WILL AFFECT P2 ONLY WHEN P2 CALLS THE SUBR.,
16800 C ALL 'TEMPO' CHANGES WILL BE IGNORED!! (THEN DUR. IN SECS. MUST
16900 C BE SET TO 'REAL TIME'.)
17000 CNEW2601 CALL NMCHG
17100 CNEW GO TO 21552
17200 6100 IF(NL.EQ.-19)GO TO 6101
17300
17400 C NEXT IS FOR QUAD ROUTINES
17500 CALL QUAD(NL)
17600 GO TO 21552
17700 6101 COFF1(J)=V(LN)
17800 C FOR 'CUTOFF N1, N2' N1=CUTOFF TIME, N2=SHORTEST NOTE.
17900 COFF2(J)=V(LN+1)
18000 GO TO 2155
18100
18200 C FOLLOWING IS FOR STRINGS OF VALUES.
18300 62 KL=NCNT(J,L)+1
18400 IF(KL.GT.KIJ2)KL=1
18500 IF(NL.EQ.-46)GO TO 677
18600 IF(NL.NE.-36)GO TO 162
18700 C THIS PART FOR STRINGS OF RAND SELECTION
18800 677 LN=KL+IJ+1
18900 KL=KL+1
19000 IF(KL.GT.KIJ2)KL=1
19100 NL=NL+45
19200 C FOR NUMBERS ONLY SO FAR(THIS MAKES NL=-1. FOR NOTES, =9)
19300 162 NCNT(J,L)=KL
19400 IF(NL.GT.-22)GO TO 1462
19500 C JUMP RAND SELECTION
19600 PAR=V(IJ+KL+1)
19700 C********** MAY 13,71 RHY REPEAT FEATURE OMITTED.
19800 C************************
19900 IF(KN.NE.3)GO TO 1155
20000 C*******JULY 16,71 IF(PAR.EQ.101.)GO TO 5174
20100 IF(PAR.EQ.-10000.)GO TO 5174
20200 CIRC IF(PAR.EQ.10000.)GO TO 5174
20300 PM=2.
20400 IF(PAR.GT.100.)GO TO 777
20500 IF(PAR.GE.1.)GO TO 877
20600 IF(NL.NE.-33)GO TO 777
20700 C NEXT FOR CHORD FEATURE
20800 PAR=-PAR
20900 CCHD=ABS(V(IJ+KL+2))
21000 KL=KL+1
21100 IF(KL.GT.KIJ2)KL=1
21200 NCNT(J,L)=KL
21300 JCHD=IJ
21400 LLCHD=L
21500 GO TO 877
21600 777 PM=3.
21700 877 IF(PAR.EQ.85.)MK=-1
21800 GO TO 5155
21900 65 W=-9900.-V(IJ-3)
22000 C W=BG TIME OF MOVE.
22100 X=ABS(V(IJ-1))
22200 IF(NL.EQ.-56)GO TO 977
22300 IF(NL.NE.-58)GO TO 771
22400 977 PM=2.
22500 771 Z=(BT-W)/VIJ2
22600 C Z= % OF WAY THROUGH.
22700 IF(Z.GT.1.)Z=1.
22800 Y=V(LN)
22900 W=V(IJ+3)
23000 IF(X.EQ.7.)W=V(IJ+4)
23100 IF(NL.LT.-58)GO TO 16002
23200 PAR=(W-Y)*Z+Y
23300 IF(X.EQ.7.)GO TO 1600
23400 GO TO 1155
23500 C************** JUNE 1,71
23600 C FOR "MOVX"
23700 C******** FEB/73
23800 C THE .01 IS NEEDED FOR MOVE TO OR FROM 0.
23900 16002 PAR=RMOVX(W,Y,Z)
24000 C SEE FUNCTION RMOVX 6/74 -- CAN'T HAVE -20→+20, ETC., -20→-40 OK.
24100 C THIS NEEDS WORK!
24200 IF(X.NE.7.)GO TO 1155
24300 W=V(IJ+5)
24400 Y=V(IJ+3)
24500 X=RMOVX(W,Y,Z)
24600 GO TO 16003
24700 C NEXT IS FOR MOVING RAND RANGES.
24800 C1600 PAR=(V(IJ+4)-Y)*Z+Y
24900 1600 W=V(IJ+3)
25000 C*********** BACK TO 65 IS NEW. FEB. 15,71
25100 X=(V(IJ+5)-W)*Z+W
25200 C************ JUNE 1,71
25300 16003 PAR=RAND(PAR,X)
25400 GO TO 1155
25500 67 LN=IJ+3
25600 NM=LN+KIJ2-1
25700 ML=1
25800 GO TO 1900
25900 4155 K=-(PAR+9999.0)*100.+.1
26000 CIRC4155 K=(PAR-9999.0)*100.+.1
26100 P(L)=P(K)
26200 IF(L.NE.2)GO TO 772
26300 IF(K.EQ.2)P2=PX2
26400 C PX2=LAST UNPROCESSED VALUE OF P2 (+ OR -) 7/74
26500 772 PM=PL(K)
26600 GO TO 21551
26700 C -9999.nn REPEATS ANOTHER PARAM.(-9999.21 REPEATS P21)
26800 C 7/74 **** NOTE PROBLEMS OF P2 WITH SUBR, TEMPO, TF AND RAND. TF.
26900 C ALSO DF. THE REAL TIME VALUE PRINTED MAY HAVE GONE THROUGH MANY
27000 C CHANGES. HENCE WHEN TRANSFERING THE VALUE TO OTHER PARAMS OR
27100 C INSTS GREAT CARE MUST BE TAKEN TO BE SURE THE RESULTS ARE CORRECT.
27200 6157 LN=V(LN-1)
27300 DO 1068 K=1,KL
27400 1068 IF(K.LT.KL)LN=LN+V(LN)+1
27500 2068 PM=LN+1
27600 PAR=LN+V(LN)
27700 GO TO 5155
27800 68 KL=NCNT(J,L)
27900 IF(NL.NE.-1000)GO TO 680
28000 C NEXT FOR CHORDS AND INST NAME CHANGES. LCDH SAVES FOR CHORD FEATURE
28100 IF(J.NE.IFIX(V(IJ-2))/10000)GO TO 2155
28200 C ABOVE CHECKS FOR AGREEMENT OF INST NUM. AND POINTER
28300 C 'DUPL' AND 'ALL' IGNORE 'NAMES'
28400 LCHD=L
28500 CXX KCHD=KIJ2
28600 CXX KL=KL+1
28700 CXX IF(KL.GE.KIJ2)KL=0
28800 CXX NCNT(J,L)=KL
28900 CXX INST(J)=IV(IJ+2)+KL*IV(IJ+3)
29000
29100 IF(CCHD.GE.0)GO TO 2155
29200 CCHD=0
29300 KL=NCNT(J,LLCHD)+1
29400 X=V(JCHD+KL)
29500 IF(X.GE.0)GO TO 9203
29600 NCNT(J,LLCHD)=KL
29700 CCHD=ABS(V(JCHD+KL+1))
29800 GO TO 9203
29900 680 IF(KL.EQ.0)GO TO 774
30000 IF(KL.NE.10000)GO TO 773
30100 774 KL=KIJ2
30200 773 PM=KL+1
30300 PAR=PM+V(KL)-1
30400 KL=PAR+1
30500 IF(V(KL).EQ.-10000.)DUR(J)=BT
30600 CIRC IF(V(KL).EQ.10000.)DUR(J)=BT
30700 C 'END' OR 'FINE' IN 'LIT' LIST.
30800 IF(V(KL).EQ.999.)KL=IJ+2
30900 NCNT(J,L)=KL
31000 CNEW IF(NL.EQ.-89)ISUB=-2
31100 C -89= 'NAME' FEATURE. CHANGES INST. NAME EACH NOTE, ACCORDING TO LIST.
31200 GO TO 5155
31300 C ******* JAN 20 *************
31400 1155 IF(PAR.EQ.-10000.)GO TO 5174
31500 CIRC1155 IF(PAR.EQ.10000.)GO TO 5174
31600 C TYPE 'END' OR 'FINE' AS LAST IN ANY STRING TO SET DURATION.
31700 IF(PAR.GE.-9999.)GO TO 5155
31800 IF(PAR.LT.-9999.4)GO TO 5155
31900 CIRC IF(PAR.LE.9999.)GO TO 5155
32000 CIRC IF(PAR.GE.9999.4)GO TO 5155
32100 IF(PM.EQ.1.)GO TO 4155
32200 C****JULY 16,71 1155 IF((PAR.GT.9999.).AND.(PM.EQ.1.))GO TO 4155
32300 5155 P(L)=PAR
32400 21551 PL(L)=PM
32500 IF(ISUB)GO TO 601
32600 IF(L.EQ.2)GO TO 4203
32700 21552 IF(IDF.GE.0)GO TO 2155
32800 DF=PAR
32900 C DUTY FAC. IS ALWAYS % OF P2 - WHETHER CONSIDERING BASIC OR REAL TIME.
33000 IDF=0
33100 2155 CONTINUE
33200
33300 9203 IF(KB.EQ.0)GO TO 1170
33400 NL=KB
33500 DO 2203 K=1,KB
33600 X=OTH(NL,1)
33700 IF(X.LT.100000.)GO TO 2203
33800 L=X/100000.
33900 Y=(X-L*100000.)/100.
34000 IX=Y
34100 JC=NL
34200 IF(J.NE.L)GO TO 2203
34300 IF(IX.EQ.ICT)GO TO 5203
34400 2203 NL=NL-1
34500 GO TO 1170
34600 5203 JD=Y*100-IX*100+.5
34700 IF(JD.GT.0)GO TO 3203
34800 M=0
34900 P1(J)=PP1+PP2
35000 GO TO 7021
35100 4203 X=COFF1(J)
35200 IF(X.LE.BT)GO TO 6102
35300 C FOR 'CUTOFF N1, N2' N1=CUTOFF TIME, N2=SHORTEST NOTE.
35400 CC IF(P2.NE.PX2)GO TO 2155
35500 C JUMP IF 'TEMPO' CHANGE
35600 IF(BT+P2.GT.X-COFF2(J))P2=X-BT
35700 6102 PR=P2
35800 PX2=P2
35900 C TO SAVE THE UNPROCESSED P2 FOR 'P2 P2;' IN INPUT. 7/74
36000 IF(T5.EQ.0)GO TO 7203
36100 IF(IT3.LE.1)GO TO 6203
36200 IF(BT.LT.TBG+TDUR)GO TO 6203
36300 3155 IT3=IT3+3
36400 TBG=TBG+TDUR
36500 TDUR=V(IT3)
36600 IF(BT.GE.TBG+TDUR)GO TO 3155
36700 T1=V(IT3+1)
36800 T2=V(IT3+2)
36900 CALL SQYY(AC,T1,T2,TDUR)
37000 6203 RA=PR
37100 IF(BT.EQ.TBG)XT(J)=T1
37200 K=IT3
37300 RC=0
37400 C75 RD=1
37500 KA=1
37600 C75 RB=0
37700 Z=TDUR+TBG-BT
37800 X=T1
37900 Y=T2
38000 YY=AC
38100 CHN=TBG
38200 ZZ=TDUR
38300 CALL ACCEL
38400 8203 P2=RA*RD
38500 7203 P2=P2*T4
38600 X=ABS(P2*TF)
38700 C P2 IS KEPT WITHOUT TF*
38800 K=X+.5
38900 Y=ROFF(J)
39000 Y=Y+K-X
39100 IF(ABS(Y).LT.1.)GO TO 7155
39200 CCC IF(X)K=X-.5
39300 CCC72031 ROFF(J)=ROFF(J)+K-X
39400 CCC IF(ABS(ROFF(J)).LT.1.)GO TO 7155
39500 CCC Y=1.
39600 CCC IF(ROFF(J))Y=-Y
39700 CCC K=K-Y
39800 CCC ROFF(J)=ROFF(J)-Y
39900 X=1
40000 IF(Y)X=-X
40100 K=K-X
40200 Y=Y-X
40300 C ROUND-OFF GAP WILL NOT EXCEED .0001 AT COLGATE
40500 7155 IF(P2)K=-K
40600 PP2=K/RNDOFF
40700 C RNDOFF IS SET IN DATA. (10000.0)
40800 ROFF(J)=Y
41000 C AVOIDS ROUND-OFF PROBLEMS
41100 C AFTER ALL THIS P2 IN SUBR MAY NOT EQUAL PP2(REAL TIME) DF COMES LATER!
41200 IF(IPT(J,31).EQ.0)GO TO 6155
41300 IF(ICT)GO TO 1170
41400 X=V(IPT(J,31)+2)/2.
41500 IF(PP2.GE.0)GO TO 615
41600 MK=-1
41700 PP2=-PP2
41800 615 Y=IFIX(RAND(-X,X)*RNDOFF+.5)/RNDOFF
41900 C ROUNDS TO 1/100 OR 1/1000 OR 1/10000 -- RNDOFF
42300 W=RDEV(J)
42400 IF(ABS(W+Y).GT.X)Y=-Y
42500 C TOTAL RAND DEV.(RDEV) WON'T EXCEED P31
42600 RDEV(J)=W+Y
42700 PP2=PP2+Y
42800 C SET P31 TO .0001 TO BRING VOICE BACK TO EXACT TIME(0 WON'T DO IT)
42900
43000
43700 C NEVER MORE THAN .1( DEVIATION WITH RAN TF. (RTF=.05)
43800 6155 IF(ICT)GO TO 9203
43900 GO TO 2155
44000 3203 P(JD)=OTH(JC,2)
44100 X=OTH(JC,3)
44200 IF(X.NE.1.)X=3.
44300 C 'EDITS' PRINT,NUM. OR 5 CHARS.
44400 PL(JD)=X
44500 C NEXT ADDED NOV.72 CHECK FOR SIDE AFFECTS !!!!! **********
44600 IF(JD.EQ.2)PP2=P2
44700 C 'TF' AND 'TEMPO' WILL NOT AFFECT PP2 'EDITS'.
44800 1170 IF(MK)GO TO 2022
44900 IF(PP2)GO TO 2022
45000
45100 ZPAR=PP1
45200 P1(J)=PP1+PP2
45300 C ZPAR IS USED HERE WHEN OP1(OMIT) IS .GT.0. OMIT IS IN REAL TIME.
45400 LK=INST(J)
45500 2021 IF(PP1.LT.OP1)GO TO 2612
45600 IF(INVIS(J).LT.0)GO TO 2170
45700 C ALL PARAMS WILL PRINT,1ST TIME WHEN USING 'OMIT'.
45800 IF(INONLY.GT.0)GO TO 1204
46000 6021 IF(P(NPA).NE.COPY(NPA))GO TO 5021
46100 IF(PL(NPA).GT.1)GO TO 5021
46300 C 'LIT' DATA WILL ALWAYS PRINT.
46400 NPA=NPA-1
46500 IF(NPA.GT.2)GO TO 6021
46600 5021 DO 1304 K=3,NPA
46700 1304 COPY(K)=P(K)
46800 1204 IF(PL4.NE.1.)GO TO 2170
46900 P4=P4*AMPFAC
47000 L=0
47100 INP(J)=P4
47200 DO 1021 K=1,NINS
47300 1021 IF(P1(K).GT.PP1)L=L+INP(K)
47400 IF(L-IAMP-1)GO TO 2170
47500 IAMP=L
47600 AMPTIM=PP1
47700 2170 IF(MX.EQ.3)GO TO 2612
47900 PP1=PP1-OP1
48000 C PUTS SPACES BETWEEN NOTES .GT. .05( APART
48100 IF(MZ.NE.-1)GO TO 5170
48200 IF(A.GE.PP1)GO TO 5170
48300 IF(INONLY)WRITE(JOUT,902)
48400 A=PP1+.05
48500 5170 ML=10
48600 IF(NPA.LT.10)ML=NPA
48700 MLX=3
48800 NL=2
48900 IEND=0
49000 K=INVIS(J)
49100 IF(K.EQ.0)GO TO 3170
49200 IF(K.EQ.-1)GO TO 9170
49300 IEND=-1
49400 C THIS DELETES END PRINTOUT ( ;PRINT P1 ETC.)
49500 IF(K.EQ.-2)GO TO 3170
49600 C -1=INVIS FRONT, -2=INVIS END -3=BOTH
49700 9170 LK=0
49800 C NEEDED TO INIT INVISIBLE MODE PRINT-OUT (NO INST NAME, P1, P2)
49900 C NEXT CREATES FORMAT DATA IN IFM ARRAY.
50000 31701 KL=3
50100 GO TO 4170
50200 3170 IF(J.EQ.INONLY)GO TO 775
50300 IF(.NOT.INONLY)GO TO 2612
50400 775 VX(1)=PP1
50500 IF(DF.GT.0)GO TO 6170
50600 VX2=PP2+DF
50700 IF(VX2.LE.0)VX2=PP2/2
50800 C NO NEG. TIME VALUES ALLOWED.
50900 C NEG. DF= FIXED REST AREA BEFORE NEXT ATTACK.
51000 GO TO 7170
51100 6170 IF(DF.LT.100)GO TO 8170
51200 C DF+100=FIXED NOTE DUR. NOT.GT.PP2 7/74 COLGATE -AND BELOW
51300 C DF+1000=FIXED TIME OF OVERLAP 3/77 (CHNG THIS TO 300 SOMEDAY!)
51400 IF(DF.GT.1000)GO TO 8171
51500 VX2=DF-100.
51600 IF(VX2.GT.PP2)VX2=PP2
51700 C DF+200= FIXED DURATION WITHOUT REGARD TO OVERLAPS
51800 IF(DF.GT.200)VX2=DF-200.
51900 GO TO 7170
52000 C*** NEXT FOR DF>1000 ****!!!! SWITCH THIS FEATURE WITH ORD. DF SOMEDAY!!!!
52100 8171 VX2=PP2+DF-1000.
52200 GO TO 7170
52300 8170 VX2=PP2*DF
52400 7170 IFM3='F9.4,'
52500 IFM4='F8.4,'
52520 IF(VX2.GE.100.0)IFM4='F9.4,'
52600 KL=5
52700 IF(NPA.LT.3)GO TO 2121
52800
52900 4171 FORMAT(' ******** WARNING: P2 = 0 *********'/)
53000 4170 NL=2
53100 IF(P2.EQ.0)TYPE 4171
53200 DO 1121 K=MLX,ML
53300 X=P(K)
53400 L=PL(K)
53500 IF(L-2)321,521,621
53600 C L=1 NUMBS, =2 NOTES,FUNCS, =3 LITS.
53700 321 IF(X.GE.0)GO TO 4211
53800 IFM(KL)=IFCOM
53900 NL=NL+1
54000 KL=KL+1
54100 4211 LN='F7.4,'
54105 C X0.0000
54110 Y=ABS(X)
54120 IF(Y.GE.10.0)LN='F8.4,'
54130 IF(Y.GE.100.0)LN='F9.4,'
54135 C CHANGES FORMAT FOR DIFF. NUMS.
54137 IF(Y.EQ.0)LN='F3.0,'
54140 IF(Y.GE.1000.0)LN='F9.2,'
54145 C***** BIGGEST POSSIBLE NUM. TO PRINT IS +-99999.99
54150 IFM(KL)=LN
54400 421 VX(KL-NL)=X
54500 GO TO 1121
54600 521 IFM(KL)=IFM2
54700 C CREATES '1XA5'
54800 LN=X
54900 VX(KL-NL)=SCAL(LN)
55000 GO TO 42
55100 621 IF(L.GT.3)GO TO 721
55200 VX(KL-NL)=X
55300 C ABOVE LETS A5 WD BE USED IN SUBR BY SETTING PL(N)=3.
55400 42 IFM(KL)=IFM2
55500 GO TO 1121
55600 721 LN=X
55700 IFM(KL)=I1X
55800 NL=NL+1
55900 DO 821 M=1,LN-L+1
56000 KL=KL+1
56100 IOUT(KL-NL)=IV(L-1+M)
56200 821 IFM(KL)=IA1
56300 1121 KL=KL+1
56400
56500 C NO MORE THAN 80 ITEMS IN FORMAT.
56600 2121 IF(KL.LE.80)GO TO 21211
56700 21212 FORMAT(' ERROR! TOO MANY LIT. ITEMS')
56800 TYPE 21212
56900 21211 DO 921 M=KL+1,80
57000 921 IFM(M)=IBLA
57100 IFM(KL)=')'
57200 C ***SAMSWITCH***
57300 CC999 IF(ISAM)GO TO 1921
57400 IF(LK.EQ.IBLA)GO TO 1921
57500 C NEXT FOR AUTOMATIC NAME CHANGES WHEN OVERLAP OCCURS. (LK=INST(J))
57600 M=-1
57700 L=1
57800 C USES ARRAYS NA (EQUIV TO AA), LETRS(NUM. OF LETTERS IN NAME.
57900 2221 IF(NA(L).NE.J)GO TO 2321
58000 C CHECK TO SEE IF THIS INST NUM IS IN LIST
58100 M=M+1
58200 C M IS NAME CHANGE FACTOR
58300 IF(AA(L+1).GT.VX1)GO TO 2321
58400 2421 AA(L+1)=VX1+VX2
58500 IF(M.LE.0)GO TO 1921
58600 LK=LK+M*2**(50-LETRS(J)*7)
58700 CC LK=LK+M*2**(1+(7-LETRS(J))*7)
58800 C CHANGES LAST LETTER OF INST NAME(LETRS(N)=NUM. OF LETTERS +2)
58900 IF(M.GT.JNAM(J))JNAM(J)=M
59000 C KEEP TRACK OF HOW COPIES OF EACH INST. ARE NEEDED
59100 GO TO 1921
59200 2321 L=L+2
59300 IF(L.LE.ITOT)GO TO 2221
59400 C ITOT IS NUM. OF THINGS IN LIST
59500 M=M+1
59600 NA(ITOT)=J
59700 C PUT INST NUM INTO LIST
59800 L=ITOT
59900 ITOT=ITOT+2
60000 GO TO 2421
60100
60200 1921 L=KL-NL-1
60300 IF(MX)WRITE(1,IFM)LK,(VX(K),K=1,L)
60400 CC IF(MX)WRITE(23,IFM)LK,(VX(K),K=1,L)
60500 IF(.NOT.MZ)GO TO 30210
60600 IF(ML.GE.NPA)IFM(KL)='$)'
60700 WRITE(JOUT,IFM),LK,(VX(K),K=1,L)
60800 30210 IF(ML.GE.NPA)GO TO 3021
60900 MLX=ML+1
61000 ML=ML+10
61100 IF(ML.GT.NPA)ML=NPA
61200 LK=IBLA
61300 GO TO 31701
61400 3021 IF(IEND)GO TO 30211
61500 C IEND=-1 FOR INVIS. ENDING. (ALLOWS EXTENTION OF P LIST.)
61600 IF(MX)WRITE(1,3616)INST(J),ICT
61700 CC IF(MX)WRITE(23,3616)INST(J),ICT
61800 30211 IF(MZ)WRITE(JOUT,8902),J,INST(J),ICT,BT
61900 2612 PP1=ZPAR
62000 GO TO 21
62100 8902 FORMAT('+;<'I2,1XA5,I4,' >',F7.2)
62200 3616 FORMAT(';PRINT (P1);< ',A5,I4)
62300 C PRINTS RESTS
62400 2022 PP2=ABS(PP2)
62500 C IN THIS VERSION TYPE 'R' FOR RESTS IN ANY PARAM BUT P2.
62600 C FOR RESTS IN SEQS. TYPE -DUR.
62700 C WHEN RANDOM RESTS ARE CHOSEN, SEQS. MISS NOTES.
62800 C RAN RESTS ARE TOUCHED BY SUBROUTINES ONLY BY SETTING IREST!!
62900 INP(J)=0
63000 P1(J)=PP1+PP2
63100 C STORES NEXT P1 TIME FOR THIS INST.
63200 IF((MZ.NE.-1).OR.(PP1.LT.OP1))GO TO 21
63300 X=PP1-OP1
63400 IF(A.GE.X)GO TO 121
63500 WRITE(JOUT,902)
63600 A=X+.05
63700 C NEXT PRINTS A REST INDICATION
63800 121 IF(INONLY.OR.J.EQ.INONLY)WRITE(JOUT,1110),INST(J),X,PP2,
63900 1 J,INST(J),ICT,BT
64000 21 IF(CCHD.EQ.0)GO TO 122
64100 C NEXT FOR CHORDS
64200 P3=CCHD
64300 L=LCHD
64400 NL=-1000
64500 CCHD=-CCHD
64600 GO TO 68
64700 122 PR=ABS(PR)
64800 BG(J)=BT+PR
64900 IF(ICT.EQ.DUR(J)-10000.)GO TO 5174
65000 IF(BG(J).LT.DUR(J))GO TO 500
65100 5174 BG(J)=19999.
65200 DO 3174 K=1,NINS
65300 C INSERTS CAN'T FOLLOW LAST REGULAR NOTE.
65400 C (ADD REST IF INSERT AT END IS NEEDED.)
65500 3174 IF(BG(K).LT.19999.)GO TO 500
65600 GO TO 175
65700 C CHOOSES INST WITH NEXT BEGIN TIME.
65800 500 J=1
65900 BW=BT
66000 NL=NINS+KB
66100 DO 22 K=2,NL
66200 22 IF(BG(J).GT.BG(K))J=K
66300 IF(J.GT.NINS.OR.NINS.EQ.1)GO TO 3022
66400 J=1
66500 DO 5022 K=2,NINS
66600 X=P1(J)
66700 Y=P1(K)+.0001
66800 C LOWEST NUMBERED INST WILL COME 1ST IF BG TIMES ARE VERY CLOSE
66900 IF(BG(J).EQ.19999.)X=19999.
67000 IF(BG(K).EQ.19999.)Y=19999.
67100 5022 IF(X.GT.Y)J=K
67200 C ABOVE IS FOR ROUND-OFF PROBLEMS WITH 'TEMPO' AND 'CONDUCT'.
67300 3022 BT=BG(J)
67400 IF((BT.EQ.19999.).OR.(P1(J).GE.DURX))GO TO 175
67500 IF(CNT(J).GT.0)GO TO 1022
67600 IF(CNT(J).EQ.0)P1(J)=0
67700 IF(CNT(J).EQ.-1)CNT(J)=0
67800 C N.B. 'TF' CONTROLS BG TIME WHEN BG .GT. 0
67900 1022 IF((BT.LT.T6).OR.(IT3.GT.1))GO TO 1108
68000 T4=T2
68100 T5=0
68200 T6=10000.
68300 GO TO 1108
68400 1175 FORMAT('+',A5,'=',F7.2,2X,$)
68500 1109 FORMAT(' FINISH; < ',A5,'.SCR')
68600 1110 FORMAT(' <',A5,2F8.2,2X,'******* REST <'I2,1XA5,I4,F11.2)
68700 1603 FORMAT(' AMPL. FACTOR=',F4.2,', P4 MAX.AMP.=',I6,', AT TIME'
68800 1,F8.3)
68900 175 IF(MZ)WRITE(JOUT,1109),ISLAC
69000 IF(MX.GE.0)GO TO 4175
69100 WRITE(1,1109),ISLAC
69200 END FILE 1
69300 CC WRITE(23,1109),ISLAC
69400 CC END FILE 23
69500 TYPE 60003
69600 60003 FORMAT(/' ***** DATA HAS BEEN WRITTEN ON DISK *****'/)
69700 603 FORMAT(' TOTAL DURS: ',$)
69800 CC FOR COLGATE ONLY***4175 CALL ENDSUB
69900 C CLEARS CNTL O --- IF YOU HAVE HIT IT.
70000 4175 WRITE(JOUT,1603),AMPFAC,IAMP,AMPTIM
70100 WRITE(JOUT,603)
70200
70300 5175 DO 2175 K=1,NINS
70400 X=P1(K)-OP1
70500 IF(MZ)GO TO 6175
70600 TYPE 1175,INST(K),X
70700 GO TO 2175
70800 6175 WRITE(JOUT,1175),INST(K),X
70900 2175 CONTINUE
71000
71100 176 FORMAT(/' *******',I3,' COPIES NEEDED OF INSTRUMENT ',A5)
71200 DO 1176 K=1,NINS
71300 IF(JNAM(K).EQ.0)GO TO 1176
71400 J=JNAM(K)+1
71500 IF(MZ)GO TO 2176
71600 TYPE 176,J,INST(K)
71700 GO TO 1176
71800 2176 WRITE(JOUT,176)J,INST(K)
71900 1176 CONTINUE
72000
72100 CC IF(JOUT.NE.22)GO TO 3175
72200 CC END FILE 22
73100 CC END FILE 22
73200 3175 TYPE 1023,ISLAC,IXIN
73300 CALL EXIT
73400 END